package org.lestr.secuel.noyau;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;

public class Jeu implements Serializable {

	
	// Déclaration de constantes
	private static final long serialVersionUID = 1L;

	
	// Déclaration des attributs
	private Collection<Scene> scènes;
	private Collection<JeuEcouteur> écouteurs;
	private String nom;
	
	
	// Constructeur
	public Jeu(){
		
		// Instanciation des attributs
		scènes = new ArrayList<Scene>();
		écouteurs = new ArrayList<JeuEcouteur>();
		nom = "Nouveau jeu";
		
	}// FIN Constructeur
	
	
	/** Ajoute un écouteur au jeu */
	public void ajoutEcouteur(JeuEcouteur écouteur){
	
		écouteurs.add(écouteur);
		
	}// FIN ajoutEcouteur
	
	
	/** Retire un écouteur au jeu */
	public void retraitEcouteur(JeuEcouteur écouteur){
		
		écouteurs.remove(écouteur);
		
	}// FIN retraitEcouteur
	
	
	/** Ajoute une scène au jeu */
	public void ajoutScène(Scene scène){
		
		// Ajoute
		scènes.add(scène);
		
		// Prévient l'écouteur
		for(JeuEcouteur écouteur : écouteurs)
			écouteur.scèneAjoutée(this, scène);
		
	}// FIN ajoutScène
	
	
	/** Retire une scène du jeu */
	public void retraitScène(Scene scène){
		
		// Retire
		scènes.remove(scène);
		
		// Prévient l'écouteur
		for(JeuEcouteur écouteur : écouteurs)
			écouteur.scèneRetirée(this, scène);
		
	}// FIN retraitScène
	
	
	/** Retourne les scène du jeu */
	public Iterable<Scene> getScènes(){
		
		return scènes;
		
	}// FIN retScène


	// Accesseurs
	public String getNom() {
		return nom;
	}
	public void setNom(String nom) {
		this.nom = nom;
	}
	
	
}// FIN Classe
